package com.si3.controlador;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.si3.modelo.Login;
import com.si3.modelo.ObjetoAnio;
import com.si3.modelo.Profesor;
import com.si3.modelo.Propuesta;
import com.si3.modelo.Solicitud;
import com.si3.modelo.Usuario;
import com.si3.servicio.PropuestasService;
import com.si3.servicio.SolicitudesService;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import org.springframework.web.servlet.mvc.SimpleFormController;


public class AceptarSolicitudController extends SimpleFormController
{
   private SolicitudesService solicitudesService;
   List<Profesor> profesores=null;
   String codigoSolicitud=null;
   
   public AceptarSolicitudController()
   {
       setCommandClass(Profesor.class);
       setCommandName("profesor");
       setSuccessView("showMessage");
       setFormView("aceptarSolicitud");
   }
   

   public void setSolicitudesService(SolicitudesService service)
   {
       this.solicitudesService = service;
   }

   public SolicitudesService getSolicitudesService()
   {
       return solicitudesService;
   }
	    
 

   
   protected Map referenceData(HttpServletRequest request, Object command, Errors errors) throws Exception 
   {
   	   Map referenceData = new HashMap();
   	   codigoSolicitud = request.getParameter("codigo"); 
       Login login = (Login) request.getSession().getAttribute("login");
       setCommandClass(Profesor.class);
       setCommandName("profesor");
       if (login.getUserType() == Usuario.TipoUsuario.ADMIN)
       {
    	  request.getSession().setAttribute("codigo", codigoSolicitud);
          profesores=solicitudesService.getProfesores();
          referenceData.put("profesores", profesores);
       }      
       return referenceData;
   } 
   
   
   @Override
   protected ModelAndView onSubmit(HttpServletRequest request, 
                                   HttpServletResponse response, 
                                   Object command, 
                                   BindException errors) throws Exception 
   {
       ModelAndView mv = new ModelAndView(getSuccessView());       
       Profesor director = (Profesor) command;
       Login login = (Login) request.getSession().getAttribute("login");
       
       if (login.getUserType() == Usuario.TipoUsuario.ADMIN)
       {
    	   request.getSession().getAttribute("codigo");
      	   solicitudesService.aceptarSolicitud(Integer.parseInt(codigoSolicitud),director);      	  
           mv.addObject("message", "La solicitud se ha aceptado correctamente.");
           mv.addObject("tipo", "administrador");
       }
       return mv;
       
   }
  
}